package algo3.pruebas.vista;

import junit.framework.TestCase;
import algo3.modelo.Posicion;
import algo3.modelo.armas.Arma;
import algo3.modelo.armas.DisparoConvencional;
import algo3.modelo.armas.MinaSubmarinaPorContacto;
import algo3.modelo.armas.MinaSubmarinaPuntualConRetardo;
import algo3.modelo.armas.MinaSubmarinaTripleConRetardo;
import algo3.vista.VisorPuntaje;

public class VisorPuntajeTest extends TestCase{
        
        public void testDescuentaCorrectamenteAlPasarCincoTurnos(){
                int puntajeInicial = 10000;
                int valorDescontadoPorTurno = 10;
                VisorPuntaje visorPuntaje = new VisorPuntaje (14, puntajeInicial, valorDescontadoPorTurno);
                for(int i=0;i<5;i++){
                        visorPuntaje.vivir();
                }
                assertEquals(visorPuntaje.getPuntaje(),puntajeInicial - 5*valorDescontadoPorTurno);
        }
        
        public void testDisparoConvencionalDescuentaDelPuntaje(){
                
                int puntajeInicial = 10000;
                VisorPuntaje visorPuntaje = new VisorPuntaje(14,puntajeInicial,10);
                Posicion unaPosicion = new Posicion(0,0);
                Arma disparoConvencional = new DisparoConvencional(unaPosicion);
                visorPuntaje.descontarCostoDelArma(disparoConvencional.getCosto());
                assertEquals(visorPuntaje.getPuntaje(),9800);
                
        }
        
        public void testMinaSubmarinaDobleConRetardoDescuentaDelPuntaje(){
                
                int puntajeInicial = 10000;
                VisorPuntaje visorPuntaje = new VisorPuntaje(14,puntajeInicial,10);
                Posicion unaPosicion = new Posicion(0,0);
                Arma disparoConvencional = new DisparoConvencional(unaPosicion);
                visorPuntaje.descontarCostoDelArma(disparoConvencional.getCosto());
                assertEquals(visorPuntaje.getPuntaje(),puntajeInicial - disparoConvencional.getCosto());
                
        }

        public void testMinaSubmarinaPorContactoDescuentaDelPuntaje(){
        
                int puntajeInicial = 10000;
                VisorPuntaje visorPuntaje = new VisorPuntaje(14,puntajeInicial,10);
                Posicion unaPosicion = new Posicion(0,0);
                Arma mina = new MinaSubmarinaPorContacto(unaPosicion);
                visorPuntaje.descontarCostoDelArma(mina.getCosto());
                assertEquals(visorPuntaje.getPuntaje(),puntajeInicial - mina.getCosto());
        
        }

        public void testMinaSubmarinaPuntualConRetardoDescuentaDelPuntaje(){
        
                int puntajeInicial = 10000;
                VisorPuntaje visorPuntaje = new VisorPuntaje(14,puntajeInicial,10);
                Posicion unaPosicion = new Posicion(0,0);
                Arma mina = new MinaSubmarinaPuntualConRetardo(unaPosicion);
                visorPuntaje.descontarCostoDelArma(mina.getCosto());
                assertEquals(visorPuntaje.getPuntaje(),puntajeInicial - mina.getCosto());
        
        }

        public void testMinaSubmarinaTripleConRetardoDescuentaDelPuntaje(){
        
                int puntajeInicial = 10000;
                VisorPuntaje visorPuntaje = new VisorPuntaje(14,puntajeInicial,10);
                Posicion unaPosicion = new Posicion(0,0);
                Arma mina = new MinaSubmarinaTripleConRetardo(unaPosicion);
                visorPuntaje.descontarCostoDelArma(mina.getCosto());
                assertEquals(visorPuntaje.getPuntaje(),puntajeInicial - mina.getCosto());
        
        }

}
